A container format is a computer file format that can include various types of data, compressed by means of standardized encoders and codecs. The container file is used to identify and interleave the different data types. Simpler container formats can include different types of audio codecs, while more advanced container formats can support audio, video, subtitles, chapters, and meta-data (tags), along with the synchronization information needed to play back the various streams together.
When container files are broadcast or multicast over lossy networks, packet errors may occur upon the file reception. Some video decoders are not robust with respect to channel errors. It is often easier for a video decoder or player to be able to process compressed video files with entirely missing slices or pictures than to be able to process compressed video files with partially missing slices or pictures. Due to variable length coding, it is difficult for a video decoder to detect missing or corrupt data, because every bit can be interpreted as an allowable, but incorrect, symbol. Additionally, some container file formats, such as the International Organization for Standardization/International Electrotechnical Commission (ISO/IEC) Moving Picture Experts Group-4 (MPEG-4) Part 10 Advanced Video Coding (AVC) standard/International Telecommunication Union, Telecommunication Sector (ITU-T) H.264 recommendation (hereinafter the “MPEG-4 AVC standard”), rely on a table of offsets in order to identify the location of whole slices or pictures in a file. When data is missing, these offsets will be incorrect, preventing proper video decoder operation.
When video is streamed over packet networks, the Real-time Transport Protocol (RTP) is typically used. Real-time Transport Protocol packet headers include sequence numbers which can be used to identify missing packets. Real-time Transport Protocol data packets may be of variable lengths. It is generally recommended that compressed video slices be aligned with packets. If a packet includes one or more complete slices and the packet is lost, the decoder will not have the ability to process fractional slices.
The MPEG-4 AVC standard specifies Network Abstraction Layer (NAL) units, in which coded slices must be included. Macroblocks in a coded picture are placed into one or more slices. Network Abstraction Layer units may also include other types of data, such as sequence or picture parameter sets, Supplemental Enhancement-information (SEI) messages, and so forth. When a MPEG-4 AVC Standard compliant bitstream is streamed over Internet Protocol (IP) networks, it is typical to use a scheme which specifies a syntax for sending a MPEG-4 AVC Standard compliant bitstream using Real-time Transport Protocol. In one prior art approach, if neither fragmentation nor aggregation units are used, a single entire Network Abstraction Layer unit is placed in an Internet Protocol packet for transmission. If that packet is lost due to transmission errors, a single entire Network Abstraction Layer unit is lost. If aggregation units are used, several entire Network Abstraction Layer units are placed in a single packet. If that packet is lost due to transmission errors, the several entire Network Abstraction Layer units are lost. In these cases, the partial Network Abstraction Layer units will not arrive at a corresponding receiver. If fragmentation units are used, a single large Network Abstraction Layer unit is split across multiple packets. A receiver can detect if one or more of these packets are lost due to transmission errors by using sequence numbers included in the Real-time Transport Protocol packets.
If a fragmentation unit is lost, the receiver should discard all following fragmentation units in transmission order corresponding to the same fragmented Network Abstraction Layer unit. A receiver in an endpoint or in a Media Aware Network Element (MANE) may aggregate the first n-1 fragments of a Network Abstraction Layer unit to an (incomplete) Network Abstraction Layer unit, even if fragment n of that Network Abstraction Layer unit is not received. In this case, the forbidden_zero_bit of the Network Abstraction Layer unit is set to one to indicate a syntax violation. In accordance with the MPEG-4 AVC Standard, the Network Abstraction Layer unit header includes a one bit syntax field called the forbidden_zero_bit. In MPEG-4 AVC Standard compliant bitstreams, the forbidden_zero_bit is typically equal to 0. When an error in the bitstream syntax is detected, the decoder may consider the detected condition as an indication that byte alignment may have been lost and may discard all bitstream data until the detection of byte alignment at a later position in the bitstream.
The MPEG-4 AVC Standard defines a filler data Network Abstraction Layer unit type. A decoder is expected to ignore Network Abstraction Layer units including filler data.
File transfer over bi-directional networks frequently uses a reliable protocol such as, for example, Transmission Control Protocol (TCP). If a packet loss occurs, re-transmission is used to ultimately receive all of the data in a file. When files are transferred over unidirectional networks or bi-directional networks using unreliable protocols, re-transmission is not used.
Compressed video and audio can be stored together in multimedia container formats, in accordance with, for example, the MPEG-4 AVC Standard, an Audio Video Interleaved (AVI) format, the 3rd Generation Partnership Project (3GPP), and the ISO/IEC MPEG-2 Standard. The MPEG-4 AVC Standard includes a container file format that may be used to store several different video (MPEG-2 video, MPEG-4 Part 2 video, or MPEG-4 AVC video) or audio (MPEG-2 Layer 3, Advanced Audio Coding (AAC)) formats. The MPEG-4 AVC Standard file format is based on the ISO media file format.
The basic unit in a MPEG-4 AVC file is a sample, which for video is typically an entire coded picture. In non-hint tracks, a sample is an individual frame of video, a time-contiguous series of video frames, or a time-contiguous compressed section of audio. In hint tracks, a sample defines the formation of one or more streaming packets. No two samples Within a track share the same time-stamp.
A MPEG-4 AVC file includes a sample table. The sample table provides information for each sample (typically a coded picture) that indicates the offset in the file, where the sample is located, and the sample size.
The sample table includes all the time and data indexing of the media samples in a track. Using the tables, it is possible to locate samples in time, determine their type (e.g., I-frame or other), and determine their size, container, and offset into that container.
If the track that the Sample Table Box is included in does reference data, then the following sub-boxes are may be required: Sample Description, Sample Size, Sample To Chunk, and Chunk Offset.
The MPEG-4 AVC file format has been extended to included MPEG-4 AVC video. When MPEG-4 AVC video is included in the MPEG-4 AVC file format, start codes are not included in the file.
A file delivery protocol referred to as File Delivery over Unidirectional Transport (FLUTE) is aimed at multicast delivery over uni-directional networks. File Delivery over Unidirectional Transport can be used to deliver MPEG-4 AVC files. All File Delivery over Unidirectional Transport transmitted packets in a particular File Delivery over Unidirectional Transport session will be of the same length and, hence, will not be aligned with the variable length coded slices or pictures in the MPEG-4 AVC file. If packet loss occurs during delivery of a MPEG-4 AVC file, then the received partial MPEG-4 AVC file is invalid. The offsets in the sample table will point to incorrect locations. Due to variable length coded pictures, in an invalid MPEG-4 AVC file, an offset in the MPEG-4 AVC sample table which should point to the start of a particular coded frame will instead point to an unknown location in the bitstream data, which would likely be in the middle of a coded frame. Each File Delivery over Unidirectional Transport packet contains a Source Block Number field which increments for each transmitted packet. The File Delivery over Unidirectional Transport protocol includes a File Description Table (FDT) which includes a field to indicate the size of the file to be delivered.